// 项类型枚举
import { IWidgetGroup } from './resize';

export enum ItemType {
  info = 0, // 信息项
  add, // 添加项
}

export type ThemeType = 'light' | 'dark' | 'hcDark' | 'hcLight';

// 终端渲染项属性接口
export interface ItemProps {
  group?: IWidgetGroup; // 关联的分组
  selected?: boolean; // 是否被选中
  type?: ItemType; // 项类型
  onClick?: () => void; // 点击事件
  onClose?: () => void; // 关闭事件
  onInputBlur?: (id: string) => void; // 输入框失焦事件
  onInputEnter?: (id: string, name: string) => void; // 输入框回车事件
  onDropdown?: (event: React.MouseEvent<HTMLElement>) => void; // 下拉菜单事件
  onContextMenu?: (event: React.MouseEvent<HTMLElement>) => void; // 右键菜单事件
  getKeybinding?: (command: string) => string; // 获取快捷键绑定
  onDrop?: (event: React.DragEvent) => void; // 拖拽释放事件
  onDragStart?: (event: React.DragEvent) => void; // 拖拽开始事件
  provider: ITerminalRenderProvider; // 渲染提供者
  theme: ThemeType; // 主题类型
  draggable?: boolean; // 是否可拖拽
}

// 终端渲染提供者接口
export interface ITerminalRenderProvider {
  infoItemRender: React.FunctionComponent<ItemProps>; // 信息项渲染组件
  addItemRender: React.FunctionComponent<ItemProps>; // 添加项渲染组件
}
